package it.uniroma2.art.coda.interfaces;

import it.uniroma2.art.coda.structures.BindLabelToExistingARTURIResource;
import it.uniroma2.art.coda.structures.SelectedProjectionRules;
import it.uniroma2.art.coda.structures.ResourcesSmartSuggesterStruct;

/**
 * @author Andrea Turbati
 */
public abstract class ResourcesSmartSuggesterInterface extends CODAExtensionModuleInterface {

	protected SelectedProjectionRules selProjRules;
	protected BindLabelToExistingARTURIResource bindLabels;

	public ResourcesSmartSuggesterInterface(String id, String description) {
		super(id, description);
	}

	/**
	 * Set the selected Projection Rules decided by the Projection Disambiguation Annotation module
	 * 
	 * @param selProjRules
	 *            the selected Projection Rules decided by the Projection Disambiguation Annotation module
	 */
	public void setSelectedProjRules(SelectedProjectionRules selProjRules) {
		this.selProjRules = selProjRules;
	}

	/**
	 * Set the Hints produced by the Identity Resolution Annotation module
	 * 
	 * @param bindLabels
	 *            the Hints produced by the the Identity Resolution Annotation module
	 */
	public void setBindLabelToARTURIResource(BindLabelToExistingARTURIResource bindLabels) {
		this.bindLabels = bindLabels;
	}

	/**
	 * This method interrogate the component and it should be called after all the Hints from other modules
	 * and the UIMA annotation have been set
	 * 
	 * @return list of Hints
	 */
	public abstract ResourcesSmartSuggesterStruct invokeComponent();

}
